﻿// Decompiled with JetBrains decompiler
// Type: MCM.Abstractions.FluentBuilder.ISettingsPropertyGroupBuilder
// Assembly: MCMv5, Version=5.10.2.0, Culture=neutral, PublicKeyToken=null
// MVID: 7AB326B9-B2B4-41C2-9177-68E944071101
// Assembly location: D:\steam\steamapps\workshop\content\261550\2859238197\bin\Win64_Shipping_Client\MCMv5.dll

using MCM.Abstractions.FluentBuilder.Models;
using MCM.Common;
using System;
using System.Collections.Generic;

#nullable enable
namespace MCM.Abstractions.FluentBuilder
{
  public interface ISettingsPropertyGroupBuilder
  {
    Dictionary<string, ISettingsPropertyBuilder> Properties { get; }

    ISettingsPropertyGroupBuilder SetGroupOrder(int value);

    ISettingsPropertyGroupBuilder AddToggle(
      string id,
      string name,
      IRef @ref,
      Action<ISettingsPropertyGroupToggleBuilder>? builder);

    ISettingsPropertyGroupBuilder AddBool(
      string id,
      string name,
      IRef @ref,
      Action<ISettingsPropertyBoolBuilder>? builder);

    ISettingsPropertyGroupBuilder AddDropdown(
      string id,
      string name,
      int selectedIndex,
      IRef @ref,
      Action<ISettingsPropertyDropdownBuilder>? builder);

    ISettingsPropertyGroupBuilder AddInteger(
      string id,
      string name,
      int minValue,
      int maxValue,
      IRef @ref,
      Action<ISettingsPropertyIntegerBuilder>? builder);

    ISettingsPropertyGroupBuilder AddFloatingInteger(
      string id,
      string name,
      float minValue,
      float maxValue,
      IRef @ref,
      Action<ISettingsPropertyFloatingIntegerBuilder>? builder);

    ISettingsPropertyGroupBuilder AddText(
      string id,
      string name,
      IRef @ref,
      Action<ISettingsPropertyTextBuilder>? builder);

    ISettingsPropertyGroupBuilder AddButton(
      string id,
      string name,
      IRef @ref,
      string content,
      Action<ISettingsPropertyButtonBuilder>? builder);

    ISettingsPropertyGroupBuilder AddCustom<TSettingsPropertyBuilder>(
      ISettingsPropertyBuilder<TSettingsPropertyBuilder> builder)
      where TSettingsPropertyBuilder : ISettingsPropertyBuilder;

    IPropertyGroupDefinition GetPropertyGroupDefinition();
  }
}
